cmake_minimum_required(VERSION 3.16)

project(circuit-design-pro VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

# 配置项目头文件搜索路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})

# 添加用户头文件
set(USER_INCLUDES
    ${CMAKE_CURRENT_SOURCE_DIR}/inc/fixed_parameter.h
    ${CMAKE_CURRENT_SOURCE_DIR}/inc/bus_capacitor.h
    ${CMAKE_CURRENT_SOURCE_DIR}/inc/capacitor.h
    ${CMAKE_CURRENT_SOURCE_DIR}/inc/resistance.h
    ${CMAKE_CURRENT_SOURCE_DIR}/inc/nmos_driver.h
)

#添加用户源文件
set(USER_SOURCES
    ${CMAKE_CURRENT_SOURCE_DIR}/src/resistance.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/src/bus_capacitor.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/src/capacitor.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/src/nmos_driver.cpp
)

# 配置项目源文件
set(PROJECT_SOURCES
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
)

set(GUI_SOURCES
    gui_buscap_calc.cpp
    gui_buscap_calc.h
    gui_buscap_calc.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(circuit-design-pro
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
        ${USER_SOURCES}
        ${USER_INCLUDES}
        ${GUI_SOURCES}
        res/sch/sch.qrc

    )
# Define target properties for Andoid with Qt 6 as:
#   (TARGET circuit-design-pro APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(circuit-design-pro SHARED
            ${

         }
        )
# Define properties for Android withQt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(circuit-design-pro
            ${PROJECT_SOURCES}
        )
    endif()
endif()

target_link_libraries(circuit-design-pro PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
    set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.circuit-design-pro)
endif()
set_target_properties(circuit-design-pro PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

include(GNUInstallDirs)
install(TARGETS circuit-design-pro
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(circuit-design-pro)
endif()
